<!DOCTYPE html>
<script src="../../resources/js-test.js"></script>
<body>
<script>
description('EventTarget.addEventListener and EventTarget.removeEventLister should throw on invalid arguments.');

function listener(event)
{
}

debug('Signature:')
debug('void addEventListener(DOMString type, EventListener? listener, optional boolean useCapture)');
shouldThrow('document.addEventListener()');
shouldThrow('document.addEventListener("foo")');
shouldNotThrow('document.addEventListener("foo", listener)');
shouldNotThrow('document.addEventListener("", listener)');
shouldNotThrow('document.addEventListener("", function(){})');
shouldNotThrow('document.addEventListener("bar", listener, false)');
shouldNotThrow('document.addEventListener("bar", listener, true)');
// null
shouldNotThrow('document.addEventListener(null, listener)');
shouldNotThrow('document.addEventListener("foo", null)');
shouldNotThrow('document.addEventListener("zork", listener, null)');
// undefined
shouldNotThrow('document.addEventListener(undefined, listener)');
shouldNotThrow('document.addEventListener("foo", undefined)');
shouldNotThrow('document.addEventListener("zork", listener, undefined)');

debug('');
debug('Signature:');
debug('void removeEventListener(DOMString type, EventListener? listener, optional boolean useCapture)');
shouldThrow('document.removeEventListener()');
shouldThrow('document.removeEventListener("foo")');
shouldNotThrow('document.removeEventListener("foo", listener)');
shouldNotThrow('document.removeEventListener("foo", listener, true)');
shouldNotThrow('document.removeEventListener("bar", listener, false)');
shouldNotThrow('document.removeEventListener("bar", listener, false)');
shouldNotThrow('document.removeEventListener("bar", listener, true)');
// null
shouldNotThrow('document.removeEventListener(null, listener)');
shouldNotThrow('document.removeEventListener("foo", null)');
shouldNotThrow('document.removeEventListener("zork", listener, null)');
// undefined
shouldNotThrow('document.removeEventListener(undefined, listener)');
shouldNotThrow('document.removeEventListener("foo", undefined)');
shouldNotThrow('document.removeEventListener("zork", listener, undefined)');
</script>
